// Promise.resolve(1)
//     .then(2)
//     .then(Promise.resolve(3))
//     .then(console.log)

// let obj = {
//     a: 1,
//     b: 2,
//     c: 3,
//     '5.1': 4,
//     '5.2': 5,
//     '6.0': 6
// }

// for (let key in obj) {
//     console.log(key, obj[key])
// }


// import { createRouter, createWebHashHistory } from 'vue-router';
// import createRouterFun from './createRoute'

// const routes = Promise.resolve(createRouterFun())

// const router = createRouter({
//     history: createWebHashHistory(),
//     routes: routes
// })
// export default router

// const p1 = new Promise((res) => {
//     res(1)
// })
// const p2 = new Promise((_, res) => {
//     res(2)
// })

// Promise.allSettled([p1, p2]).then(res => {
//     console.log(res)
// })

// Promise.all([p1, p2]).then(res => {
//     console.log(res)
// }).catch(console.log)


// let obj = {
//     color: 'red',
//     // toString: function () {
//     //     return JSON.stringify(this)
//     // }
// }

// let str = '颜色'
// Object.prototype.toString = function () {
//     return JSON.stringify(this)
// }

// console.log(str + obj)



// let obj = {
//     fn: function () {
//         return () => {
//             console.log(this)
//         }
//     }
// }

// obj.fn()() // obj
// let fn1 = obj.fn()
// fn1()// obj

// let fn2 = obj.fn
// fn2()() // window




// function Person(count) {
//     this.count = count
// }

// Person.prototype.getAge = function () {
//     return this.count
// }

// let p1 = new Person(150)
// console.log(p1.getAge()) //150


// let myNew = function (fn, ...args) {

//     function res() { }
//     let result = res.apply(fn, args)
//     return result
// }

// let p2 = myNew(Person, 150)

// console.log(p1.getAge()) //


// let state = {
//     data: [{ id: 1, name: 'a' }, { id: 2, name: 'b' }]
// }
// const { data } = state

// // let temp = data.filter(item => item.id)

// let temp = data.concat([])
// temp.map(item => item.name = 'c')

// console.log(state);
// console.log(temp);
// console.log(data);


// let arr = [1, 2, 3, 4, 5, 6]

// arr.map(v => {
//     console.log(v);
//     if (v == 3) {
//         break
//     }
// })

// forEach map 等数组方法中 中不能使用break continue


// for (var i = 0; i < 3; i++) {
// } // 333
// setTimeout(() => {
//     console.log(i);
// }, 1000)
// setTimeout(() => {
//     console.log(i);
// }, 1000)
// setTimeout(() => {
//     console.log(i);
// }, 1000)

// // for (let i = 0; i < 3; i++) {
// //     setTimeout(() => {
// //         console.log(i);
// //     }, 1000)
// // } // 012


// for (var i = 0; i < 3; i++) {
//     setTimeout(() => {
//         console.log(i);
//     }, 1000)
// }

// 下载网页所有图片
// let imgArr = document.querySelectorAll('img')
// let arr = [];
// imgArr.forEach(v => arr.push(v.currentSrc))
// let downloadImage = function (imgSrc, name = ++m) {
//     let image = new Image();
//     image.setAttribute("crossOrigin", "anonymous");
//     image.onload = function () {
//         let canvas = document.createElement("canvas");
//         canvas.width = image.width;
//         canvas.height = image.height;
//         let context = canvas.getContext("2d");
//         context.drawImage(image, 0, 0, image.width, image.height);
//         let url = canvas.toDataURL("image/png");
//         let a = document.createElement("a");
//         let event = new MouseEvent("click");
//         a.download = name || "photo";
//         a.href = url;
//         a.dispatchEvent(event);
//     };
//     image.src = imgSrc;
// }
// arr.forEach(downloadImage)

let obj1 = {
    school1: 1,
    school2: {
        grass1: 1,
        grass2: {
            student: 1
        }
    }
}

function getPath(target) {
    const next = (obj, parent = '') => {
        let result = [];
        for (let key in obj) {
            let value = obj[key]
            let newKey = `${parent ? parent + '.' : ''}${key}`

            if (Object.prototype.toString.call(value) === '[object Object]') {
                result.push(newKey)
                result.push(...next(value, newKey))
            } else {
                result.push(newKey)
            }
        }
        return result
    }

    return next(target)
}

console.log(getPath(obj1))